#ifndef _SOUND_H
#define _SOUND_H

#include <string>

#include <fmod/fmod.hpp>
#include <fmod/fmod_errors.h>

#include "Vector3.h"

#ifdef GALLIUMENGINE_DLL 
#define GALLIUMENGINE_API __declspec( dllexport )
#else
#define GALLIUMENGINE_API __declspec( dllimport )
#endif

namespace GalliumEngine
{

	class SoundManager;

	class Sound
	{
	private:
		std::string id;
		FMOD::Sound* sound;
		FMOD::Channel* channel;
		FMOD_RESULT result;
	public:
		GALLIUMENGINE_API Sound::Sound(void);
		GALLIUMENGINE_API Sound(std::string _id);
		GALLIUMENGINE_API ~Sound();

		GALLIUMENGINE_API void playSound();
		GALLIUMENGINE_API void pauseSound();
		GALLIUMENGINE_API void resumeSound();

		GALLIUMENGINE_API void setSound(FMOD::Sound* _sound);
		GALLIUMENGINE_API FMOD::Sound* getSound();

		GALLIUMENGINE_API void mute();
		GALLIUMENGINE_API void unMute();

		GALLIUMENGINE_API void setVolume(float volume);

		GALLIUMENGINE_API void setPosition(Vector3 position, Vector3 velocity);
		GALLIUMENGINE_API void setMinMax(float min, float max);
	};

}


#endif